we dont' do it for hours or days...Rounding in gopal. Fix botch in ggv.
char tbuf[24];
writetime(tbuf, sizeof(tbuf), "%s", wpt->GetCreationTime(), false);
char mbuf[32];
- snprintf(mbuf, sizeof(mbuf), "%s%03d", tbuf, wpt->GetCreationTime().msec());
+ snprintf(mbuf, sizeof(mbuf), "%s%03d", tbuf, wpt->GetCreationTime().time().msec());
writebuff(buff, "%s", mbuf);
}
break;
struct tm tm;
char buff[20];
int date;
- double time;
recno++;
gbfseek(fin, 12 * sizeof(gbint32), SEEK_CUR); /* SAT info */
date = gbfgetint32(fin);
- time = gbfgetflt(fin);
+ double milliseconds = gbfgetflt(fin);
gbfseek(fin, 2 * 12, SEEK_CUR); /* SAT info */
memset(&tm, 0, sizeof(tm));
- snprintf(buff, sizeof(buff), "%06d%.f", date, time);
+ snprintf(buff, sizeof(buff), "%06d%.f", date, milliseconds);
strptime(buff, "%d%m%y%H%M%S", &tm);
- int millisecs = (int) time % 1000;
+ int millisecs = lround(milliseconds) % 1000;
wpt->SetCreationTime(mkgmtime(&tm), millisecs);
if (wpt->fix > 0) {
if (wpt->creation_time) {
struct tm tm;
- double time;
+ double milliseconds;
int date;
const time_t ct = wpt->GetCreationTime();
tm = *gmtime(&ct);
tm.tm_year -= 100;
date = ((int)tm.tm_mday * 10000) + ((int)tm.tm_mon * 100) + tm.tm_year;
gbfputint32(date, fout);
+ milliseconds = ((int)tm.tm_hour * 10000) +
+ ((int)tm.tm_min * 100) + tm.tm_sec;
+ milliseconds = (milliseconds * 1000) + (wpt->GetCreationTime().time().msec());
- time = ((int)tm.tm_hour * 10000) + ((int)tm.tm_min * 100) + tm.tm_sec;
- time = (time * 1000) + (wpt->GetCreationTime().msec());
- gbfputflt(time, fout);
+ gbfputflt(milliseconds, fout);
} else {
gbfputint32(0, fout); /* Is this invalid ? */
gbfputflt(0, fout);
speed = waypt_speed(prev, wpt);
}
if (wpt->creation_time > 0) {
- secs = (double)tm.tm_sec + (1000 * wpt->GetCreationTime().msec());
+ secs = (double)tm.tm_sec + wpt->GetCreationTime().time().msec() / 1000.0;
}
gbfputint16((gbint16) latint, fout);
line=0;
while ((buff = gbfgetstr(fin))) {
int nfields;
- unsigned long microsecs;
if ((line == 0) && fin->unicode) {
cet_convert_init(CET_CHARSET_UTF8, 1);
}
//TICK; TIME; LONG; LAT; HEIGHT; SPEED; Fix; HDOP; SAT
//3801444, 080558, 2.944362, 43.262117, 295.28, 0.12964, 2, 2.900000, 3
c = csv_lineparse(str, ",", "", column++);
- double millisecs = 0;
+ int millisecs = 0;
while (c != NULL) {
switch (column) {
case 0: /* "-" */ /* unknown fields for the moment */
+ unsigned long microsecs;
sscanf(c, "%lu", µsecs);
// Just save this; we'll use it on the next field.
- millisecs = /*lround*/(microsecs % 1000000) / 1000.0;
+ millisecs = lround((microsecs % 1000000) / 1000.0);
break;
case 1: /* Time UTC */
sscanf(c,"%lf",&hmsd);
tm->tm_sec;
date = tm->tm_mday * 10000 + tm->tm_mon * 100 +
tm->tm_year;
- fracsec = lround(waypointp->GetCreationTime().msec()/10.0);
+ fracsec = lround(waypointp->GetCreationTime().time().msec()/10.0);
}
}
if (!tm) {
/* 0 centiseconds */
if (trk_version >= 30) {
- c = lround(wpt->GetCreationTime().msec() / 10.0);
+ c = lround(wpt->GetCreationTime().time().msec() / 10.0);
gbfwrite(&c, 1, 1, mapsend_file_out);
}
}
if (opt_gprmc) {
snprintf(obuf, sizeof(obuf), "GPRMC,%010.3f,%c,%08.3f,%c,%09.3f,%c,%.2f,%.2f,%06d,,",
- (double) hms + (wpt->GetCreationTime().msec() / 1000.0),
+ (double) hms + (wpt->GetCreationTime().time().msec() / 1000.0),
fix=='0' ? 'V' : 'A',
fabs(lat), lat < 0 ? 'S' : 'N',
fabs(lon), lon < 0 ? 'W' : 'E',
}
if (opt_gpgga) {
snprintf(obuf, sizeof(obuf), "GPGGA,%010.3f,%08.3f,%c,%09.3f,%c,%c,%02d,%.1f,%.3f,M,0.0,M,,",
- (double) hms + (wpt->GetCreationTime().msec() / 1000.0),
+ (double) hms + (wpt->GetCreationTime().time().msec() / 1000.0),
fabs(lat), lat < 0 ? 'S' : 'N',
fabs(lon), lon < 0 ? 'W' : 'E',
fix,
<bounds minlat="50.307048000" minlon="8.231283000" maxlat="50.309623000" maxlon="8.232662000"/>
<wpt lat="50.307048000" lon="8.232662000">
<ele>341.950000</ele>
- <time>2009-11-06T21:32:32.528Z</time>
+ <time>2009-11-06T21:32:32.529Z</time>
<name>RPT001</name>
<cmt>RPT001</cmt>
<desc>RPT001</desc>
</wpt>
<wpt lat="50.307475000" lon="8.232442000">
<ele>341.990000</ele>
- <time>2009-11-06T21:32:33.529Z</time>
+ <time>2009-11-06T21:32:33.530Z</time>
<name>RPT002</name>
<cmt>RPT002</cmt>
<desc>RPT002</desc>
</wpt>
<wpt lat="50.307902000" lon="8.232223000">
<ele>341.813000</ele>
- <time>2009-11-06T21:32:34.530Z</time>
+ <time>2009-11-06T21:32:34.531Z</time>
<name>RPT003</name>
<cmt>RPT003</cmt>
<desc>RPT003</desc>
</wpt>
<wpt lat="50.308332000" lon="8.232000000">
<ele>341.493000</ele>
- <time>2009-11-06T21:32:35.531Z</time>
+ <time>2009-11-06T21:32:35.532Z</time>
<name>RPT004</name>
<cmt>RPT004</cmt>
<desc>RPT004</desc>
</wpt>
<wpt lat="50.308765000" lon="8.231770000">
<ele>341.150000</ele>
- <time>2009-11-06T21:32:36.532Z</time>
+ <time>2009-11-06T21:32:36.533Z</time>
<name>RPT005</name>
<cmt>RPT005</cmt>
<desc>RPT005</desc>
</wpt>
<wpt lat="50.309198000" lon="8.231532000">
<ele>340.210000</ele>
- <time>2009-11-06T21:32:37.533Z</time>
+ <time>2009-11-06T21:32:37.534Z</time>
<name>RPT006</name>
<cmt>RPT006</cmt>
<desc>RPT006</desc>
</wpt>
<wpt lat="50.309623000" lon="8.231283000">
<ele>339.163000</ele>
- <time>2009-11-06T21:32:38.534Z</time>
+ <time>2009-11-06T21:32:38.535Z</time>
<name>RPT007</name>
<cmt>RPT007</cmt>
<desc>RPT007</desc>
<name>Tracklog Thu Jan 1 00:00:00 1970</name>
<rtept lat="50.307048000" lon="8.232662000">
<ele>341.950000</ele>
- <time>2009-11-06T21:32:32.528Z</time>
+ <time>2009-11-06T21:32:32.529Z</time>
<name>RPT001</name>
<fix>2d</fix>
<sat>11</sat>
</rtept>
<rtept lat="50.307475000" lon="8.232442000">
<ele>341.990000</ele>
- <time>2009-11-06T21:32:33.529Z</time>
+ <time>2009-11-06T21:32:33.530Z</time>
<name>RPT002</name>
<fix>2d</fix>
<sat>11</sat>
</rtept>
<rtept lat="50.307902000" lon="8.232223000">
<ele>341.813000</ele>
- <time>2009-11-06T21:32:34.530Z</time>
+ <time>2009-11-06T21:32:34.531Z</time>
<name>RPT003</name>
<fix>2d</fix>
<sat>10</sat>
</rtept>
<rtept lat="50.308332000" lon="8.232000000">
<ele>341.493000</ele>
- <time>2009-11-06T21:32:35.531Z</time>
+ <time>2009-11-06T21:32:35.532Z</time>
<name>RPT004</name>
<fix>2d</fix>
<sat>11</sat>
</rtept>
<rtept lat="50.308765000" lon="8.231770000">
<ele>341.150000</ele>
- <time>2009-11-06T21:32:36.532Z</time>
+ <time>2009-11-06T21:32:36.533Z</time>
<name>RPT005</name>
<fix>2d</fix>
<sat>11</sat>
</rtept>
<rtept lat="50.309198000" lon="8.231532000">
<ele>340.210000</ele>
- <time>2009-11-06T21:32:37.533Z</time>
+ <time>2009-11-06T21:32:37.534Z</time>
<name>RPT006</name>
<fix>2d</fix>
<sat>11</sat>
</rtept>
<rtept lat="50.309623000" lon="8.231283000">
<ele>339.163000</ele>
- <time>2009-11-06T21:32:38.534Z</time>
+ <time>2009-11-06T21:32:38.535Z</time>
<name>RPT007</name>
<fix>2d</fix>
<sat>11</sat>
return &t_;
}
- // A convenience method to return the number of milliseconds (0-999).
- int msec() const { return this->time().msec(); }
-
// Integer form: YYMMDD
int ymd() const {
QDate date(this->date());
gbfprintf(fout, ".%02d", 0);
break;
case STM_TRKPT:
- gbfprintf(fout, ".%03d", wpt->GetCreationTime().msec());
+ gbfprintf(fout, ".%03d", wpt->GetCreationTime().time().msec());
break;
}
gbfprintf(fout, ",\r\n");
}
snprintf(buf, sizeof(buf), "%02d:%02d:%02d", tm.tm_hour, tm.tm_min, tm.tm_sec);
- int millisecs = wpt->GetCreationTime().msec();
+ int millisecs = wpt->GetCreationTime().time().msec();
if (millisecs > 0) {
int len = 3;
return (double) 0;
} else {
- return ((double)wpt->creation_time + ((double)wpt->creation_time.msec() / 1000));
+ return ((double)wpt->creation_time + ((double)wpt->creation_time.time().msec() / 1000));
}
}